#pragma once
#include <iostream>
#include <string>


//协议
//服务端接收数据时,必须解决数据的完整性问题,保证收到的数据是完整的;
//只有接收到的数据是一条完整的请求才可进行反序列化

// 定制协议:
// 报文=报头+有效载荷
// 报头:"有效载荷的长度" 有效载荷: _x _oper _y
// 协议:"有效载荷的长度"\r\n"有效载荷"\r\n
// "len"\r\n"_x _oper _y"\r\n len:只表示有效载荷的长度 \r\n表示分割符,不参与统计


//读取数据
class Request
{
public:

private:
    int _x;
    int _y;
    char _oper;//约定:_oper只能为"+ - * / %" 运算方式: _x _oper _y
};

//计算结果返回客户端
class Response
{
public:

private:
    int _result;//结果
    int _code;//0:表示计算结果可信  1:表示发生除0错误,结果不可信 2:非法操作
};

//Requeset,Response为结构化数据暂时认为不可以直接发送到网络,结构化数据必须转换成字符串
//假设定义 Request req(10,20,'+');req对象也是按照字节存储而tcp是面向字节流的协议
//req对象直接发送到网络,为啥进行序列化与反序列化？
//os系统内部的协议将结构化的数据直接发送到网络
//应用层不采用此种做法,当客户端是windows操作系统,服务端为Linux操作系统
//操作系统结构体对齐的规则不尽相同,便导致未可预知的错误